import request from '@/utils/request'

/**
 * 用户登录
 * @param {Object} data 登录信息
 * @param {string} data.username 用户名
 * @param {string} data.password 密码
 * @returns {Promise}
 */
export function login(data) {
  return request({
    url: '/auth/login',
    method: 'post',
    data
  })
}

/**
 * 用户注册
 * @param {Object} data 注册信息对象
 * @returns {Promise} 请求结果
 */
export function register(data) {
  return request({
    url: '/auth/register',
    method: 'post',
    data
  })
}

/**
 * 用户登出
 * @returns {Promise}
 */
export function logout() {
  return request({
    url: '/auth/logout',
    method: 'post'
  })
}

/**
 * 获取用户信息
 * @returns {Promise} 请求结果
 */
export function getInfo() {
  return request({
    url: '/api/user/info',
    method: 'get'
  })
}

/**
 * 获取用户列表
 * @param {Object} params 查询参数
 * @returns {Promise}
 */
export function getUserList(params) {
  return request({
    url: '/system/user/list',
    method: 'get',
    params
  })
}

/**
 * 获取用户详情
 * @param {number} id 用户ID
 * @returns {Promise}
 */
export function getUserDetail(id) {
  return request({
    url: `/system/user/${id}`,
    method: 'get'
  })
}

/**
 * 获取当前用户信息
 * @returns {Promise}
 */
export function getUserInfo() {
  return request({
    url: '/system/user/info',
    method: 'get'
  })
}

/**
 * 创建用户
 * @param {Object} data 用户数据
 * @returns {Promise}
 */
export function createUser(data) {
  return request({
    url: '/system/user',
    method: 'post',
    data
  })
}

/**
 * 更新用户
 * @param {number} id 用户ID
 * @param {Object} data 用户数据
 * @returns {Promise}
 */
export function updateUser(id, data) {
  return request({
    url: `/system/user/${id}`,
    method: 'put',
    data
  })
}

/**
 * 删除用户
 * @param {number} id 用户ID
 * @returns {Promise}
 */
export function deleteUser(id) {
  return request({
    url: `/system/user/${id}`,
    method: 'delete'
  })
}

/**
 * 批量删除用户
 * @param {Array} ids - 用户ID数组
 * @returns {Promise} 返回批量删除结果
 */
export function batchDeleteUsers(ids) {
  return request({
    url: '/api/user/batch',
    method: 'delete',
    data: { ids }
  })
}

/**
 * 重置用户密码
 * @param {number} id 用户ID
 * @param {string} password 新密码
 * @returns {Promise}
 */
export function resetUserPassword(id, password) {
  return request({
    url: `/system/user/${id}/password`,
    method: 'patch',
    data: { password }
  })
}

/**
 * 更新用户状态
 * @param {number} id 用户ID
 * @param {number} status 状态值(1:正常;0:停用)
 * @returns {Promise}
 */
export function updateUserStatus(id, status) {
  return request({
    url: `/system/user/${id}/status`,
    method: 'patch',
    data: { status }
  })
}

/**
 * 修改用户密码
 * @param {Object} data 密码数据
 * @param {string} data.oldPassword 旧密码
 * @param {string} data.newPassword 新密码
 * @returns {Promise}
 */
export function updateUserPassword(data) {
  return request({
    url: '/system/user/password',
    method: 'put',
    data
  })
}

/**
 * 更新用户个人信息
 * @param {Object} data 用户信息
 * @returns {Promise}
 */
export function updateUserProfile(data) {
  return request({
    url: '/system/user/profile',
    method: 'put',
    data
  })
}

/**
 * 更新用户头像
 * @param {FormData} data 头像数据
 * @returns {Promise}
 */
export function updateUserAvatar(data) {
  return request({
    url: '/system/user/avatar',
    method: 'post',
    data,
    headers: {
      'Content-Type': 'multipart/form-data'
    }
  })
}

/**
 * 获取所有用户（下拉选择用）
 * @returns {Promise} 请求结果
 */
export function getAllUsers() {
  return request({
    url: '/api/users/all',
    method: 'get'
  })
}

/**
 * 获取用户的角色
 * @param {number} userId 用户ID
 * @returns {Promise}
 */
export function getUserRoles(userId) {
  return request({
    url: `/system/user/${userId}/role`,
    method: 'get'
  })
}

/**
 * 分配用户角色
 * @param {number} userId 用户ID
 * @param {Array<number>} roleIds 角色ID数组
 * @returns {Promise}
 */
export function assignUserRoles(userId, roleIds) {
  return request({
    url: `/system/user/${userId}/role`,
    method: 'put',
    data: { roleIds }
  })
}

/**
 * 导出用户列表
 * @param {Object} params 查询参数
 * @returns {Promise}
 */
export function exportUserList(params) {
  return request({
    url: '/system/user/export',
    method: 'get',
    params,
    responseType: 'blob'
  })
} 